/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package byblos.util;

import java.util.Calendar;
import java.util.List;
import org.joda.time.DateTime;

/**
 *
 * @author marano
 */
public class Periodo {

    private Calendar inicio;
    private Calendar termino;

    public Periodo(Calendar inicio, Calendar termino) {
        this.inicio = inicio;
        this.termino = termino;
    }

    public Calendar getInicio() {
        return inicio;
    }

    public Calendar getTermino() {
        return termino;
    }

    public List<DateTime> getDatas() {
        return DataUtil.getIntervaloDatas(inicio, termino, false);
    }

    public int getQuantidadeDias() {
        return DataUtil.getDiferencaEmDias(termino, inicio);
    }

    public boolean isPeriodoContidoEm(Periodo outroPeriodo) {
        return getQuantidadeDiasIntersecao(outroPeriodo) == getQuantidadeDias();
    }

    public boolean isPeriodoContidoAqui(Periodo outroPeriodo) {
        return getQuantidadeDiasIntersecao(outroPeriodo) == outroPeriodo.getQuantidadeDias();
    }

    public int getQuantidadeDiasIntersecao(Periodo outroPeriodo) {
        int quantidadeDiasIntersecao = 0;
        List<DateTime> diasOutroPeriodo = outroPeriodo.getDatas();
        List<DateTime> diasEstePeriodo = getDatas();
        for (DateTime diaOutroPeriodo : diasOutroPeriodo) {
            if (diasEstePeriodo.contains(diaOutroPeriodo)) {
                quantidadeDiasIntersecao++;
            }
        }
        return quantidadeDiasIntersecao;
    }
}
